<!doctype html>
<html><head><meta charset="utf-8">
<title>with a sub-10% image classifier, a decent face detector, here comes ccv 0.7</title>
<link rel="stylesheet" href="/stylesheets/styles.css">
<link rel="stylesheet" href="/stylesheets/coderay.css">
<script src="/javascripts/scale.fix.js"></script>
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
<meta http-equiv="X-UA-Compatible" content="chrome=1">
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-303081-6']);
_gaq.push(['_trackPageview']);
(function() {
	var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
	ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
	var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
</head><body><div class="wrapper">
<header><h1><a href="/">ccv</a></h1>
<p>A Modern Computer Vision Library</p>
<p class="view"><a href="https://github.com/liuliu/ccv">View the Project on GitHub <small>liuliu/ccv</small></a></p>
<ul>
<li><a href="https://github.com/liuliu/ccv/zipball/stable">Download <strong>ZIP File</strong></a></li>
<li><a href="https://github.com/liuliu/ccv/tarball/stable">Download <strong>TAR Ball</strong></a></li>
<li><a href="https://github.com/liuliu/ccv">Fork On <strong>GitHub</strong></a></li>
</ul>
</header>
<section><h1>with a sub-10% image classifier, a decent face detector, here comes ccv 0.7</h1>
<p>December 23rd, 2014</p>
<p>A few months ago, with the release of ccv 0.6, I promised a subsequent version of ccv without major updates but a lot bugfixes. There is a close to release date at around July, however, slippery happened and what you see now is a 4-month delayed release bundled with some exciting new functionalities.</p>

<p><strong>A Sub-10% Image Classifier</strong><sup id="fnref:1"><a href="#fn:1" class="footnote">1</a></sup></p>

<p><a href="/photo/2014-09-09-lemur-vgg.png"><img src="/photo/2014-09-09-lemur-vgg.png" alt="Lemur on VGG" title="Lemur with New Model" /></a></p>

<p>In August, libccv’s pre-trained model participated ImageNet 2014 Large Scale Image Visual Recognition Competition and placed humbly in the middle. The idea is to provide an openly pre-trained model so that every other participant should be raised above this baseline. After a few months, a new image classification pre-trained model now provided with <strong>ccv 0.7 which reached 9.9% top-5 missing rate (<em>given an image, with 5 guesses, one of the guesses is the correct anwser in 90.1% cases</em>) on ImageNet 2012 dataset</strong>. In ImageNet 2014 challenge, only 3 participants (GoogLeNet, VGG models, and MSRA) reached sub-10% with one model, and among these, VGG made their models available in <a href="https://github.com/BVLC/caffe/wiki/Model-Zoo">Caffe Model Zoo</a> under <a href="http://creativecommons.org/licenses/by-nc/4.0/">CC-NC 4.0</a>.</p>

<p>Finally, multi-GPU with proper data / model parallelism (<em><a href="http://arxiv.org/abs/1404.5997">One weird trick</a></em>) is implemented in this version, with 4 GPUs, Matt’s model takes one and half day to converge (3.72x speed-up). 2 GPU support was actually done in July, but the recent advance in image classification challenge calls for more GPUs, and the current version is a complete rewrite and in theory can support up to 8 GPUs, however, I don’t have that setup, thus, hard-coded 4 GPU limit was imposed.</p>

<p>This version of ccv also comes with optimized convolutional kernels on CPU (SIMD with SSE2 or NEON). For the forward pass, with Core i7 5930K, VGG-D model takes about 2 seconds, Matt’s model takes about 600 ms on 10 averaging outputs (crop to center, 4 corners, and their horizontal flips). A simplified Matt’s model can do the same 10 averaging outputs on iPhone 6 within 1 second.</p>

<p><strong>A Decent Face Detector</strong></p>

<p><a href="/photo/2014-12-22-oscar.png"><img src="/photo/2014-12-22-oscar.png" alt="Oscar" title="Oscar" /></a></p>

<p>The interests in ccv sparked after the first release because the practicality of its features. Face detection always lies in the heart of that practicality. This version, a <a href="/doc/doc-scd">near state-of-the-art frontal face detector</a> is provided which reached 72.93% detection rate with 250 false positives on FDDB, detailed ROC graph comparing with the older BBF face detector in ccv on FDDB database is here:</p>

<p><a href="/resources/disc-roc-scd.png"><img src="/resources/disc-roc-scd.png" alt="Discrete ROC for SCD" title="ROC for SCD Face Detector" /></a></p>

<p><a href="/resources/disc-roc-bbf.png"><img src="/resources/disc-roc-bbf.png" alt="Discrete ROC for BBF" title="ROC for BBF Face Detector" /></a></p>

<p>On the same dataset, OpenCV’s frontal face detector at around 250 false positives has 45.18% detection rate (<a href="http://vis-www.cs.umass.edu/fddb/rocCurves/ViolaJonesScore_n0_DiscROC.txt">http://vis-www.cs.umass.edu/fddb/rocCurves/ViolaJonesScore_n0_DiscROC.txt</a>). You can read the detailed comparison with academic and commercial systems on <a href="http://vis-www.cs.umass.edu/fddb/results.html">http://vis-www.cs.umass.edu/fddb/results.html</a>.</p>

<p>As always, these pre-trained models are distributed under <a href="http://creativecommons.org/licenses/by/4.0/">Creative Commons Attribution 4.0 International License</a>. These functions are available through its <a href="/doc/doc-http">HTTP interface</a> too.</p>

<p><strong>Other Changes / bugfixes in ccv 0.7:</strong></p>

<p>1). Weight initialization scheme for convolutional networks changed from normal distribution to truncated-uniform distribution. With this initialization scheme, the deeper network can start descending early, therefore, enables to train VGG-D model directly.</p>

<p><a href="/resources/descending-matt.png"><img src="/resources/descending-matt.png" alt="Descending with Matt's Model" title="Comparison of Descending of Matt's Model with Normal Distribution and Truncated-uniform Distrbution" /></a></p>

<p>2). Added image manipulations (brightness, contrast and saturation) for convolutional network training.</p>

<p>3). <a href="/lib">Library Reference</a> now is generated with Doxygen from source code.</p>

<p>4). <a href="/tutorial">Tutorial</a> now is generated from compilable source code to ensure the integrity of these examples.</p>

<p>5). Added a FreeBSD builder for CI <a href="http://ci.libccv.org">http://ci.libccv.org</a>.</p>

<p>6). BBF implementation is deprecated.</p>

<p><strong>Acknowledgement</strong></p>

<p>Thanks to NVIDIA of donating two Titan Black GPUs for training the new image classification models. Thanks to Yangqing Jia of providing PSU for the new 4-GPU setup.</p>

<div class="footnotes">
  <ol>
    <li id="fn:1">
      <p><em>all images are generated without post-processing</em> <a href="#fnref:1" class="reversefootnote">&#8617;</a></p>
    </li>
  </ol>
</div>

<h3><a href="/">&lsaquo;&nbsp;&nbsp;back&nbsp;</a></h3>
<div id="disqus_thread"></div>
<script type="text/javascript">
	var disqus_shortname = 'libccv';
	(function() {
		var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
		dsq.src = 'http://' + disqus_shortname + '.disqus.com/embed.js';
		(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
	})();
</script>
<a href="http://disqus.com" class="dsq-brlink">comments powered by <span class="logo-disqus">Disqus</span></a>
</section>
<footer>
<p>This project is maintained by <a href="https://liuliu.me/">liuliu</a></p>
<p><small>Theme originated from <a href="https://github.com/orderedlist">orderedlist</a></small></p>
</footer>
</div>
<!--[if !IE]><script>fixScale(document);</script><!--<![endif]-->
</body>
</html>
